**Состояние перевода:** На этой странице представлен перевод статьи [Rust](/index.php/Rust "Rust"). Дата последней синхронизации: 4 декабря 2016\. Вы можете [помочь](/index.php/ArchWiki_Translation_Team_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9) "ArchWiki Translation Team (Русский)") синхронизировать перевод, если в английской версии произошли [изменения](https://wiki.archlinux.org/index.php?title=Rust&diff=0&oldid=458391).

[Википедия](https://en.wikipedia.org/wiki/Rust_(programming_language) "wikipedia:Rust (programming language)"):

	*[Rust](https://www.rust-lang.org/) — мультипарадигмальный компилируемый язык программирования общего назначения, спонсируемый Mozilla Research, поддерживающий функциональное программирование, модель акторов и процедурное программирование.*

	*Внимание языка сосредоточено на трёх задачах: безопасность, скорость и параллелизм. Он сопоставим по скорости и возможностям с C++, однако, даёт большую безопасность при работе с памятью, что обеспечивается механизмами ограничения.*

## Contents

*   [1 Rust Core Library](#Rust_Core_Library)
*   [2 Стандартная библиотека Rust](#.D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D0.B0.D1.8F_.D0.B1.D0.B8.D0.B1.D0.BB.D0.B8.D0.BE.D1.82.D0.B5.D0.BA.D0.B0_Rust)
*   [3 Цикл выпуска](#.D0.A6.D0.B8.D0.BA.D0.BB_.D0.B2.D1.8B.D0.BF.D1.83.D1.81.D0.BA.D0.B0)
*   [4 Установка](#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0)
    *   [4.1 Из репозитория](#.D0.98.D0.B7_.D1.80.D0.B5.D0.BF.D0.BE.D0.B7.D0.B8.D1.82.D0.BE.D1.80.D0.B8.D1.8F)
    *   [4.2 С помощью Rustup](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_Rustup)
    *   [4.3 Проверка после установки](#.D0.9F.D1.80.D0.BE.D0.B2.D0.B5.D1.80.D0.BA.D0.B0_.D0.BF.D0.BE.D1.81.D0.BB.D0.B5_.D1.83.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B8)
*   [5 Кросс-компиляция](#.D0.9A.D1.80.D0.BE.D1.81.D1.81-.D0.BA.D0.BE.D0.BC.D0.BF.D0.B8.D0.BB.D1.8F.D1.86.D0.B8.D1.8F)
    *   [5.1 С помощью rustup](#.D0.A1_.D0.BF.D0.BE.D0.BC.D0.BE.D1.89.D1.8C.D1.8E_rustup_2)
    *   [5.2 Windows](#Windows)
    *   [5.3 Неофициальные пакеты](#.D0.9D.D0.B5.D0.BE.D1.84.D0.B8.D1.86.D0.B8.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D1.8B)
*   [6 Cargo](#Cargo)
    *   [6.1 Использование](#.D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5)
*   [7 Поддержка в IDE](#.D0.9F.D0.BE.D0.B4.D0.B4.D0.B5.D1.80.D0.B6.D0.BA.D0.B0_.D0.B2_IDE)
*   [8 Смотрите также](#.D0.A1.D0.BC.D0.BE.D1.82.D1.80.D0.B8.D1.82.D0.B5_.D1.82.D0.B0.D0.BA.D0.B6.D0.B5)

### Rust Core Library

[Rust Core Library](https://doc.rust-lang.org/core/) — свободная от зависимостей основа стандартной библиотеки Rust. It interfaces directly with LLVM primitives, which allows Rust to be platform and hardware-agnostic. It is this integration with LLVM allows Rust to obtain greater performance than equivalent C applications compiled with Clang, making Rust software designed with libcore lower level than C. Developers looking to target software for embedded platforms may forego the standard library with `#[nostd]` to exclusively use the no-batteries-included core library for smaller binary sizes and improved performance. However, using `#[nostd]` limits the amount of software support that you can get from the larger Rust community as a majority of libraries require the standard library.

### Стандартная библиотека Rust

[Стандартная библиотека Rust](https://doc.rust-lang.org/std/index.html) предоставляет удобные абстракции высокого уровня, с помощью которых создаётся большинство переносимых программ на Rust. Например, она содержит типы `Vec`, `Iterator`, `Option`, `Result` и `String`; огромное число методов для примитивов языка; много стандартных макросов; поддержка ввода-вывода и многопоточности; использование кучи (heap) с помощью `Box`; и многие другие высокоуровневые возможности, не доступные в libcore.

### Цикл выпуска

Rust следует шестинедельному циклу выпуска, похожему на цикл выпуска Firefox. С каждым новым выпуском ядро и стандартные библиотеки улучшаются для поддержки большего числа платформ, повышения производительности и стабилизации новых возможностей для использования со стабильной версией Rust.

## Установка

### Из репозитория

Для установки последней стабильной версии Rust из официальных репозиториев Arch Linux, [установите](/index.php/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%B8%D1%82%D1%8C "Установить") пакет [rust](https://www.archlinux.org/packages/?name=rust). Он установит компилятор rustc. Также вы можете поставить [cargo](https://www.archlinux.org/packages/?name=cargo).

### С помощью Rustup

Официальный и рекомендумемый способ установки Rust для разработки ПО — с помощью инструмента [Rustup](https://www.rustup.rs/), написанного на Rust.

Преимуществом использования Rustup вместо обычной устаноки Rust из репозитория является возможность установки нескольких toolchains (stable, beta, nightly) для нескольких целевых платформ (windows, mac, android) и архитектур (x86, x86_64, arm). Также стоит отметить, что некоторые инструменты вроде [Clippy](https://github.com/Manishearth/rust-clippy) требуют поддержки компилируемых плагинов, что доступно только в nightly сборках Rust.

Есть два способа установки rustup: официально поддерживаемый разработчиками Rust и поддерживаемый Arch Linux.

1.  Скачайте скрипт установки с помощью `curl -f https://sh.rustup.rs > rust.sh`, просмотрите его: `vim ./rust.sh` и запустите: `./rust.sh` для установки. Для обновления rustup в будущем запускайте `rustup self update`.
2.  Также пакет [rustup](https://www.archlinux.org/packages/?name=rustup) доступен в официальных репозиториях Arch Linux. Обратите внимание, что при установке с помощью этого пакета обновление с помощью `rustup self update` работать **не** будет, и для обновления rustup следует обновлять этот пакет с помощью pacman.

Теперь нужно установить сам Rust. По умолчанию будет установлена стабильная версия для вашей архитектуры.

**Note:** Добавьте $HOME/.cargo/bin в переменную окружения PATH перед выполнением команды rustup.

```
$ rustup default stable

```

Проверим версию Rust с помощью `rustc -V` :

 `$ rustc -V ` 
```
rustc 1.13.0 (2c6933acc 2016-11-07)

```

Если вы хотите использовать nightly, выполните:

```
$ rustup install nightly
$ rustup default nightly

```
 `$ rustc -V ` 
```
rustc 1.15.0-nightly (c80c31a50 2016-12-02)

```

### Проверка после установки

Давайте убедимся, что Rust установился корректно, написав простую программу:

 `~/hello.rs` 
```
 fn main() {
     println!("Hello, World!");
 }

```

Затем скомпилируйте её с помощью `rustc`, введя это:

 `$ rustc hello.rs && ./hello` 
```
Hello, World!

```

## Кросс-компиляция

### С помощью rustup

Использовать кросс-компиляцию с rustup очень легко. Он поддерживает очень много целевых платформ. Полный их список можно увидеть с помощью команды `rustup target list`.

Например, если вы хотите использовать stable Rust для Windows с компилятором GNU, сделайте следующее:

```
$ rustup install stable-x86_64-pc-windows-gnu

```

Эта команда установит только rust и инструменты для вашей целевой платформы, и для кросс-компиляции нужно сделать ещё несколько вещей.

### Windows

В этом разделе `$ARCH` будет целевой архитектурой (`x86_64` или `i686`).

1.  [Установите](/index.php/Pacman_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)#.D0.A3.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.BA.D0.B0_.D0.BE.D0.BF.D1.80.D0.B5.D0.B4.D0.B5.D0.BB.D0.B5.D0.BD.D0.BD.D1.8B.D1.85_.D0.BF.D0.B0.D0.BA.D0.B5.D1.82.D0.BE.D0.B2 "Pacman (Русский)") [mingw-w64-gcc](https://aur.archlinux.org/packages/mingw-w64-gcc/) и [wine](https://www.archlinux.org/packages/?name=wine)
2.  Добавьте определение binfmt для исполняемых файлов Windows вручную или из [binfmt-wine](https://aur.archlinux.org/packages/binfmt-wine/).
3.  Если вы используете rustup, достаточно просто выполнить команды `rustup install stable-$ARCH-pc-windows-gnu` и `rustup target add $ARCH-pc-windows-gnu` для установки Rust и стандартной библиотеки для вашей архитектуры. Если вы не используете rustup, поставьте стандартную библиотеку Rust для Windows в вашем каталоге rustlib (`/usr/local/lib/rustlib` если у вас [rust-nightly-bin](https://aur.archlinux.org/packages/rust-nightly-bin/) или `/usr/lib/rustlib` если вы используете пакет [rust](https://www.archlinux.org/packages/?name=rust)). Простейший путь для этого — скачать установщик Rust под Windows для нужной вам архитектуры, установить с помощью Wine (`wine start my-rust-installer.msi`) и скопировать `$INSTALL_DIR/lib/rustlib/$ARCH-pc-windows-gnu` в ваш каталог rustlib.
4.  Подскажите cargo, где искать MinGW-w64 gcc/ar добавлением следующих параметров в `~/.cargo/config` (создайте файл, если он отсутствует):

 `~/.cargo/config` 
```
[target.$ARCH-pc-windows-gnu]
linker = "/usr/bin/$ARCH-w64-mingw32-gcc"
ar = "/usr/$ARCH-w64-mingw32/bin/ar"

```

Теперь вы можете выполнять кросс-компиляцию для Windows, указывая дополнительный аргумент `--target $ARCH-pc-windows-gnu` при вызове cargo:

```
$ # Сборка
$ cargo build --release --target "$ARCH-pc-windows-gnu"
$ # Запуск unit-тестов через wine
$ cargo test --target "$ARCH-pc-windows-gnu"

```

### Неофициальные пакеты

[Неофициальный репозиторий archlinuxcn](/index.php/Unofficial_user_repositories#archlinuxcn "Unofficial user repositories") содержит rust-nightly и стандартную библиотеку Rust для i686, ARM, ARMv7, Windows 32 и 64, и вы можете просто установить то, что вам нужно, и использовать кросс-компиляцию. Тем не менее вам нужно найти ARM toolchain самостоятельно. Для Windows 32bit вам нужно получить libgcc_s_dw2-1.dll для сборки и запуска.

## Cargo

[Cargo](https://crates.io/), систему сборки и менеджер пакетов для Rust, можно установить с помощью пакета [cargo](https://www.archlinux.org/packages/?name=cargo). Nightly доступен в AUR: [cargo-nightly-bin](https://aur.archlinux.org/packages/cargo-nightly-bin/). Если у вас [rustup](https://www.archlinux.org/packages/?name=rustup), то он уже содержит в себе cargo.

Cargo помогает работать с зависимостями вашего проекта, скачивая их из своего [хранилища](https://crates.io/) или стороннего [Git](/index.php/Git "Git") репозитория. Также он позволяет убедиться, что вы всегда будете получать повторяемые сборки. Рекомендуем прочитать [официальное руководство](http://doc.crates.io/guide.html).

### Использование

Для создания нового проекта с помощью Cargo:

 `$ cargo new hello_world --bin` 

Эта команда создаст директорию с файлом `Cargo.toml` по умолчанию и настроит сборку в исполняемый файл (потому что мы добавили `--bin`; иначе будет собираться библиотека).

**Note:** Cargo использует файл [манифеста](http://doc.crates.io/manifest.html) `Cargo.toml`, который содержит метаданные, необходимые Cargo для сборки вашего проекта. `Cargo.toml` 
```
[package]
name = "hello_world"
version = "0.1.0"
authors = ["Ваше Имя <you@example.com>"]
```

## Поддержка в IDE

## Смотрите также

*   [Официальный сайт языка программирования Rust (англ.)](https://www.rust-lang.org/)
*   [Документация Rust (англ.)](https://www.rust-lang.org/documentation.html)
*   [Официальная Книга (англ.)](https://doc.rust-lang.org/stable/book/)
*   [Перевод Книги на русский язык](https://rurust.github.io/rust_book_ru/)
*   [Обзор API стандартной библиотеки (англ.)](https://doc.rust-lang.org/std/)
*   [Rust на примерах (англ.)](http://rustbyexample.com/)
*   [Rust на примерах, частичный перевод на русский язык](https://rurust.github.io/rust-by-example-ru/)
*   [Подборка материалов по изучению Rust](https://github.com/ctjhoa/rust-learning)
*   [Библиотеки (крейты, crates), доступные через Cargo](https://crates.io/)
*   [This Week in Rust (англ.)](https://this-week-in-rust.org/)
*   [Блог языка программирования Rust (англ.)](https://blog.rust-lang.org/)
*   [Форум пользователей Rust (англ.)](https://users.rust-lang.org/)
*   [The Rust Internals Forum](https://internals.rust-lang.org/)
*   [Awesome Rust: A curated list of Rust libraries and resources](https://rust.libhunt.com/)
*   [Статья в Википедии](https://ru.wikipedia.org/wiki/Rust_(язык_программирования))
*   [Русскоязычный сайт о Rust](https://rustycrate.ru/)
*   [Русскоязычный форум](https://forum.rustycrate.ru/)